﻿//using System;
//using System.Net;
//using System.Windows;
//using System.Windows.Controls;
//using System.Windows.Documents;
//using System.Windows.Ink;
//using System.Windows.Input;
//using System.Windows.Media;
//using System.Windows.Media.Animation;
//using System.Windows.Shapes;
//using DemeterSoft.Silverlight;
//using System.Collections.Generic;
//using System.Text;
//using System.Collections.ObjectModel;

//namespace SupervisionMgt.PMF.PMFRef
//{
//    public partial class DetailData
//    {
//        public object this[string key]
//        {
//            get
//            {
//                foreach (FieldData data in this.Fields)
//                {
//                    if (data.Name == key)
//                    {
//                        #region datadict
//                        if (data.Type == "datadict")
//                        {
//                            if (string.IsNullOrEmpty(data.Value))
//                            {
//                                return new DictData();
//                            }
//                            else
//                            {
//                                DictData dict = new DictData();
//                                dict.Id = Convert.ToInt32(data.Value);
//                                dict.Name = data.DisplayText;
//                                return dict;
//                            }
//                        }
//                        #endregion
//                        #region datetime
//                        else if (data.Type == "datetime")
//                        {
//                            if (string.IsNullOrEmpty(data.Value))
//                            {
//                                return DateTime.Now;
//                            }
//                            else
//                            {
//                                return Convert.ToDateTime(data.Value);
//                            }
//                        }
//                        #endregion
//                        #region org
//                        else if (data.Type == "org" || data.Type == "suborg")
//                        {
//                            if (string.IsNullOrEmpty(data.Value))
//                            {
//                                return null;
//                            }
//                            else
//                            {
//                                string[] ids = data.Value.Split(new char[] { ',' }, StringSplitOptions.RemoveEmptyEntries);
//                                string[] names = data.DisplayText.Split(new char[] { ',' }, StringSplitOptions.RemoveEmptyEntries);
//                                List<OrgData> orgs = new List<OrgData>();
//                                for (int index = 0; index < ids.Length; index++)
//                                {
//                                    OrgData org = new OrgData();
//                                    org.Id = Convert.ToInt32(ids[index]);
//                                    org.Name = names[index];
//                                    orgs.Add(org);
//                                }
//                                return orgs;
//                            }
//                        }
//                        #endregion
//                        #region subuser
//                        else if (data.Type == "subuser")
//                        {
//                            if (string.IsNullOrEmpty(data.Value))
//                            {
//                                return new OperateUser();
//                            }
//                            else
//                            {
//                                OperateUser operateUser = new OperateUser();
//                                operateUser.Id = Convert.ToInt32(data.Value);
//                                operateUser.DisplayName = data.DisplayText;
//                                return operateUser;
//                            }
//                        }
//                        #endregion
//                        #region suborguser
//                        else if (data.Type.StartsWith("suborguser:"))
//                        {
//                            if (string.IsNullOrEmpty(data.Value))
//                            {
//                                return new List<OperateUser>();
//                            }
//                            else
//                            {
//                                List<OperateUser> users = new List<OperateUser>();
//                                string[] idArray = data.Value.Split(new char[] { ',' }, StringSplitOptions.RemoveEmptyEntries);
//                                string[] nameArray = data.DisplayText.Split(new char[] { ',' }, StringSplitOptions.RemoveEmptyEntries);
//                                for (int index = 0; index < idArray.Length; index++)
//                                {
//                                    OperateUser operateUser = new OperateUser();
//                                    operateUser.Id = Convert.ToInt32(idArray[index]);
//                                    operateUser.DisplayName = nameArray[index];
//                                    users.Add(operateUser);
//                                }
//                                return users;
//                            }
//                        }
//                        #endregion
//                        #region attachment
//                        else if (data.Type == "attachment")
//                        {
//                            if (string.IsNullOrEmpty(data.Value))
//                            {
//                                return new List<AttachmentInfo>();
//                            }
//                            else
//                            {
//                                string[] ids = data.Value.Split(new char[] { ',' }, StringSplitOptions.RemoveEmptyEntries);
//                                List<AttachmentInfo> infos = new List<AttachmentInfo>();
//                                for (int index = 0; index < ids.Length; index++)
//                                {
//                                    AttachmentInfo info = new AttachmentInfo();
//                                    info.Id = Convert.ToInt32(ids[index]);
//                                    infos.Add(info);
//                                }
//                                return infos;
//                            }
//                        }
//                        #region code
//                        else if (data.Type == "code")
//                        {
//                            if (string.IsNullOrEmpty(data.Value))
//                            {
//                                return string.Empty;
//                            }
//                            else
//                            {
//                                return data.Value;
//                            }
//                        }
//                        #endregion
//                        #endregion
//                        #region word
//                        else if (data.Type == "word")
//                        {
//                            return data.Value;
//                        }
//                        #endregion
//                        #region dependence
//                        else if (data.Type.StartsWith("dp:"))
//                        {
//                            return new string[] { data.Value, data.DisplayText };
//                        }
//                        #endregion
//                        #region editor
//                        else if (data.Type == "editor")
//                        {
//                            return data.Value;
//                        }
//                        #endregion
//                        #region ntext,text
//                        #endregion
//                        return data.DisplayText;
//                    }
//                }
//                return string.Empty;
//            }
//            set
//            {
//                foreach (FieldData data in this.Fields)
//                {
//                    if (data.Name == key)
//                    {
//                        if (data.Type == "datadict")
//                        {
//                            DictData dict = value as DictData;
//                            data.Value = Convert.ToString(dict.Id);

//                            if (data.IsVisible
//                                && (!data.IsSaveNullable || !data.IsSubmitNullable))
//                            {
//                                // 不允许为空
//                                if (string.IsNullOrEmpty(data.Value) || data.Value == "0")
//                                {
//                                    throw new Exception("请选择" + data.Name + "!");
//                                }
//                            }
//                            return;
//                        }
//                        else if (data.Type == "datetime")
//                        {
//                            DateTime date = (DateTime)value;
//                            data.Value = date.ToString("yyyy-MM-dd");
//                        }
//                        else if (data.Type == "BelongOrg")
//                        {
//                        }
//                        else if (data.Type == "org" || data.Type == "suborg")
//                        {
//                            List<OrgData> orgs = (List<OrgData>)value;
//                            StringBuilder idBuilder = new StringBuilder();
//                            StringBuilder textBuilder = new StringBuilder();
//                            foreach (OrgData org in orgs)
//                            {
//                                idBuilder.AppendFormat("{0},", org.Id);
//                                textBuilder.AppendFormat("{0},", org.Name);
//                            }
//                            if (idBuilder.Length > 0)
//                            {
//                                idBuilder = idBuilder.Remove(idBuilder.Length - 1, 1);
//                            }
//                            data.Value = idBuilder.ToString();
//                            data.DisplayText = textBuilder.ToString();

//                            if (data.IsVisible
//                                && (!data.IsSaveNullable || !data.IsSubmitNullable))
//                            {
//                                // 不允许为空
//                                if (string.IsNullOrEmpty(data.Value))
//                                {
//                                    throw new Exception("请选择" + data.Name + "!");
//                                }
//                            }
//                        }
//                        #region subuser
//                        else if (data.Type == "subuser")
//                        {
//                            OperateUser operateUser = (OperateUser)value;
//                            if (operateUser == null)
//                            {
//                                throw new Exception("请选择" + data.Name + "!");
//                            }
//                            if (operateUser.Id == 0)
//                            {
//                                throw new Exception("请选择" + data.Name + "!");
//                            }
//                            //BUGBUG
//                            //不能为admin或空
//                            if (data.IsVisible && (!data.IsSaveNullable || !data.IsSubmitNullable))
//                            {
//                                // 不允许为空
//                                if (operateUser.Id == 0)
//                                {
//                                    throw new Exception("请选择" + data.Name + "!");
//                                }
//                            }

//                            data.Value = operateUser.Id.ToString();
//                            data.DisplayText = operateUser.DisplayName;
//                        }
//                        #endregion
//                        #region suborguser
//                        else if (data.Type.StartsWith("suborguser:"))
//                        {
//                            List<OperateUser> users = (List<OperateUser>)value;
//                            StringBuilder idBuilder = new StringBuilder();
//                            StringBuilder textBuilder = new StringBuilder();
//                            if (users != null)
//                            {
//                                foreach (OperateUser item in users)
//                                {
//                                    idBuilder.AppendFormat("{0},", item.Id);
//                                    textBuilder.AppendFormat("{0}({1}),", item.OrgName, item.DisplayName);
//                                }
//                                if (idBuilder.Length > 0)
//                                {
//                                    idBuilder = idBuilder.Remove(idBuilder.Length - 1, 1);
//                                }
//                                data.Value = idBuilder.ToString();
//                                data.DisplayText = textBuilder.ToString();

//                            }
//                            if (data.IsVisible
//                                && (!data.IsSaveNullable || !data.IsSubmitNullable))
//                            {
//                                // 不允许为空
//                                if (string.IsNullOrEmpty(data.Value))
//                                {
//                                    throw new Exception("请选择" + data.Name + "!");
//                                }
//                            }
//                        }
//                        #endregion
//                        else if (data.Type == "attachment")
//                        {
//                            StringBuilder idBuilder = new StringBuilder();
//                            List<AttachmentInfo> infos = value as List<AttachmentInfo>;
//                            for (int index = 0; index < infos.Count; index++)
//                            {
//                                idBuilder.AppendFormat("{0},", infos[index].Id);
//                            }
//                            data.Value = idBuilder.ToString();
//                        }
//                        else if (data.Type == "code")
//                        {
//                            data.Value = value.ToString();
//                            data.DisplayText = data.Value;
//                        }
//                        #region word
//                        else if (data.Type == "word")
//                        {
//                            data.Value = value.ToString();
//                            data.DisplayText = data.Value;
//                            if (data.IsVisible
//                                && (!data.IsSaveNullable || !data.IsSubmitNullable))
//                            {
//                                // 不允许为空
//                                if (string.IsNullOrEmpty(data.Value))
//                                {
//                                    throw new Exception("请选择" + data.Name + "!");
//                                }
//                            }
//                        }
//                        #endregion
//                        #region dependence
//                        else if (data.Type.StartsWith("dp:"))
//                        {
//                            string[] items = (string[])value;
//                            if (items != null && items.Length == 2)
//                            {
//                                data.Value = items[0];
//                                data.DisplayText = items[1];
//                            }
//                            else
//                            {
//                                throw new Exception("请选择" + data.Name + "!");
//                            }
//                        }
//                        #endregion
//                        #region editor
//                        else if (data.Type == "editor")
//                        {
//                            data.Value = value.ToString();
//                            if (data.IsVisible
//                                && (!data.IsSaveNullable || !data.IsSubmitNullable))
//                            {
//                                string empty = "<Section xml:space=\"preserve\" HasTrailingParagraphBreakOnPaste=\"False\" xmlns=\"http://schemas.microsoft.com/winfx/2006/xaml/presentation\"></Section>";
//                                if (string.IsNullOrEmpty(data.Value) || string.Equals(empty, data.Value))
//                                {
//                                    throw new Exception("请填写" + data.Name + "!");
//                                }
//                            }
//                        }
//                        #endregion
//                        else
//                        {
//                            data.Value = Convert.ToString(value);
//                            data.DisplayText = data.Value;
//                            if (data.IsVisible
//                                && (!data.IsSaveNullable || !data.IsSubmitNullable))
//                            {
//                                // 不允许为空
//                                if (string.IsNullOrEmpty(data.Value))
//                                {
//                                    throw new Exception("请选择" + data.Name + "!");
//                                }
//                            }
//                        }
//                    }
//                }
//            }
//        }
//    }
//}
